Apple II
File Type Notes
_____________________________________________________________________________
                                                  Developer Technical Support

File Type:         $A0 (160)
Auxiliary Type:    $0000

Full Name:     WordPerfect Word Processing File
Short Name:    WordPerfect Document

Written by:    Matt Deatherage                                   January 1989

Files of this type and auxiliary type contain WordPerfect(TM) documents.
_____________________________________________________________________________

WordPerfect(TM) for the Apple IIe and IIc provide more than 110 word 
processing features.  In addition to a 50,000-word spelling checker and a 
thesaurus, the program offers footnotes, headers and footers, mail-merge, 
macros, search and replace, on-line help, file management, and dozens of 
formatting features.

WordPerfect for the Apple IIGS includes all these features and more.  The 
program has a mouse interface with pull-down menus and allows for the editing 
multiple documents.  Users can edit an unlimited number of documents at the 
same time and can take advantage of any memory available.

For more information on WordPerfect, contact:

                    WordPerfect, Inc.
                    1555 North Technology Way
                    Orem, Utah  84057
                    Attention:  Apple II WordPerfect Technical Support
                    Telephone:  (801) 225-5000

The WordPerfect file format is copyrighted (C) 1984, 1985, 1986, 1987 and 1988 
by WordPerfect Corporation and is printed here with permission.


File Structure

WordPerfect files are ASCII files.  The text is neither encrypted nor 
compacted.  There is no end-of-file character, and padding past the end of a 
document with garbage may cause WordPerfect to crash.

Formatting or function codes are embedded as they occur in the text.  No code 
is used for beginning of file or end of file.  When creating WordPerfect files 
from other programs, keep in mind the following:

o    The initial WordPerfect margin settings are usually 10 and 74, 
     and it is best to keep the line length to 65 or less, unless you 
     change the margin settings.
o    It is best not to pad with spaces.


Function Codes

All function codes are listed in hexadecimal.  All except the first five have 
the high bit set.  Function codes above $C0 are discussed under "Multi-Byte 
Functions."

  Code   Command
  $09    Tab
  $0A    Hard New Line
  $0B    Soft New Page
  $0C    Hard New Page
  $0D    Soft New Line

  $80    No operation
  $81    Turn right justification on
  $82    Turn right justification off
  $83    End of centered text
  $84    End of aligned or flushed right text
  $85    (Used in other WordPerfect Corporation Products)
  $86    Center page from top to bottom
  $87    (Used in other WordPerfect Corporation Products)
  $88    (Used in other WordPerfect Corporation Products)
  $89    Tab after the right margin
  $8A    Widow/orphan on
  $8B    Widow/orphan off
  $8C    Hard end of line and soft end of page
  $8D    Footnote number (appears only inside of footnotes)
  $8E    Reserved
  $8F    Reserved
  $90    (Used in other WordPerfect Corporation Products)
  $91    (Used in other WordPerfect Corporation Products)
  $92    (Used in other WordPerfect Corporation Products)
  $93    (Used in other WordPerfect Corporation Products)
  $94    Underline on
  $95    Underline off
  $96    Reverse video on
  $97    Reverse video off
  $98    (Used in other WordPerfect Corporation Products)
  $99    Overstrike
  $9A    Cancel hyphenation of following word
  $9B    (Used in other WordPerfect Corporation Products)
  $9C    Bold off
  $9D    Bold on
  $9E    Hyphenation off
  $9F    Hyphenation on
  $A0    Hard space
  $A1    (Used in other WordPerfect Corporation Products)
  $A2    (Used in other WordPerfect Corporation Products)
  $A3    (Used in other WordPerfect Corporation Products)
  $A4    (Used in other WordPerfect Corporation Products)
  $A5    (Used in other WordPerfect Corporation Products)
  $A6    (Used in other WordPerfect Corporation Products)
  $A7    (Used in other WordPerfect Corporation Products)
  $A8    (Used in other WordPerfect Corporation Products)
  $A9    Hard hyphen in line
  $AA    Hard hyphen at end of line
  $AB    Hard hyphen at end of page
  $AC    Soft hyphen
  $AD    Soft hyphen at end of line
  $AE    Soft hyphen at end of page
  $AF    (Used in other WordPerfect Corporation Products)
  $B0    (Used in other WordPerfect Corporation Products)
  $B1    (Used in other WordPerfect Corporation Products)
  $B2    (Used in other WordPerfect Corporation Products)
  $B3    (Used in other WordPerfect Corporation Products)
  $B4    (Used in other WordPerfect Corporation Products)
  $B5    (Used in other WordPerfect Corporation Products)
  $B6    (Used in other WordPerfect Corporation Products)
  $B7    (Used in other WordPerfect Corporation Products)
  $B8    (Used in other WordPerfect Corporation Products)
  $B9    (Used in other WordPerfect Corporation Products)
  $BA    (Used in other WordPerfect Corporation Products)
  $BB    (Used in other WordPerfect Corporation Products)
  $BC    Superscript
  $BD    Subscript
  $BE    Advance 1/2 line up
  $BF    Advance 1/2 line down


Multi-Byte Functions

Multi-byte function codes mark commands which require more than one byte.  
They mark both the beginning and end of such functions in the file.  The 
length is indicated for most functions, but some have a variable length.  In 
these cases, programs should scan for the second occurrence of the function 
code to indicate the end of the function.

     Length    Code    Command                    Format
     6         $C0     Margin Reset               Byte:    $C0
                                                  Byte:    Old left margin
                                                  Byte:    Old right margin
                                                  Byte:    New left margin
                                                  Byte:    New right margin
                                                  Byte:    $C0
                                                  
     4         $C1     Spacing reset              Byte:    $C1
                                                  Byte:    Old spacing
                                                  Byte:    New spacing
                                                  Byte:    $C1
     Note:  Spacing values are stored in half-line increments.

     3         $C2     Left margin release        Byte:    $C2
                                                  Byte:    Number of spaces
                                                           to go left
                                                  Byte:    $C2
     5         $C3     Center the following text  Byte:    $C3
                                                  Byte:    Type of center:
                                                           0 = between margins
                                                           1 = around current
                                                               column
                                                  Byte:    Center column number
                                                  Byte:    Starting column
                                                           number
                                                  Byte:    $C3
                                                  Bytes:   Centered text
                                                  Byte:    $83

     5         $C4     Align or flush right       Byte:    $C4
                                                  Byte:    Align character
                                                           (see below)
                                                  Byte:    Align column number
                                                  Byte:    Starting column
                                                           number
                                                  Byte:    $C4
                                                  Bytes:   Aligned text
                                                  Byte:    $84
     Note:  If the alignment character is $0A (hard new line) then 
     this is a flush right and the alignment column number is the 
     right margin; otherwise, the alignment column number is the next 
     tab stop.

     6         $C5     Reset hyphenation zone     Byte:    $C5
                       (hotzone)                  Byte:    Old left hotzone
                                                  Byte:    Old right hotzone
                                                  Byte:    New left hotzone
                                                  Byte:    New right hotzone
                                                  Byte:    $C5

     4         $C6     Set page number position   Byte:    $C6
                                                  Byte:    Old position code
                                                  Byte:    New position code
                                                           Codes:
                                                           0 = None
                                                           1 = Top Left
                                                           2 = Top Center
                                                           3 = Top Right
                                                           4 = Top Left
                                                               and Right
                                                           5 = Bottom Left
                                                           6 = Bottom Center
                                                           7 = Bottom Right
                                                           8 = Bottom Left
                                                               and Right
                                                  Byte:    $C6
     6         $C7     Set page number            Byte:    $C7
                                                  Byte:    Old number,high byte
                                                  Byte:    Old number,low byte
                                                  Byte:    New number,high byte
                                                  Byte:    New number,low byte
                                                  Byte:    $C7
     Note:  The page numbers are words with the bytes in the "wrong" order.

     8         $C8     Set page number column     Byte:    $C8
                       positions                  Byte:    Old left position
                                                  Byte:    Old center position
                                                  Byte:    Old right position
                                                  Byte:    New left position
                                                  Byte:    New center position
                                                  Byte:    New right position
                                                  Byte:    $C8
    42         $C9     Set tabs                   Byte:    $C9
                                                  20 Bytes:Old tab table
                                                  20 Bytes:New tab table
                                                  Byte:    $C9
     Note:  Each bit in the tab table represents one position, from 
     bit 0 to bit 159.

     3         $CA     Conditional end of page    Byte:    $CA
                                                  Byte:    Number of single-
                                                           spaced lines not
                                                           to be broken
                                                  Byte:    $CA

     6         $CB     Set pitch and/or font      Byte:    $CB
                                                  Byte:    Old pitch
                                                  Byte:    Old font
                                                  Byte:    New pitch
                                                  Byte:    New font
                                                  Byte:    $CB
     Note:  If the pitch is negative, then it is proportional.

     4         $CC     Set temporary margin       Byte:    $CC
                       (indent)                   Byte:    Old temporary margin
                                                  Byte:    New temporary margin
                                                  Byte:    $CC

     3         $CD     End of temporary margin    Byte:    $CD
                                                  Byte:    Temporary margin
                                                  Byte:    $CD

     4         $CE     Set top margin    Byte:    $CE
                                                  Byte:    Old top margin
                                                  Byte:    New top margin
                                                  Byte:    $CE

     3         $CF     Suppress page              Byte:    $CF
                       characteristics            Byte:    Suppress code:
                                                           (Any combination
                                                           valid)
                                                           Bit: Meaning:
                                                           0    all suppressed
                                                           1    Page numbers 
                                                                suppressed.
                                                           2    Page number 
                                                                moved to 
                                                                bottom.
                                                           3    All headers 
                                                                suppressed
                                                           4    Header A 
                                                                suppressed
                                                           5    Header B 
                                                                suppressed
                                                           6    Footer A 
                                                                suppressed
                                                           7    Footer B 
                                                                suppressed
                                                  Byte:    $CF

     6         $D0     Set form length            Byte:    $D0
                                                  Byte:    Old form length
                                                  Byte:    Old number of
                                                           text lines
                                                  Byte:    New form length
                                                  Byte:    New number of
                                                           text lines
                                                  Byte:    $D0

   Variable    $D1     Header/footer              Byte:    $D1
                                                  Byte:    Old def byte
                                                           (see below)
                                                  Byte:    Number of half-lines
                                                           used by old 
                                                           header/footer
                                                  2 bytes: $FF
                                                  Byte:    Left margin
                                                  Byte:    Right margin
                                                  Bytes:   ASCII Text
                                                  Byte:    $FF
                                                  Byte:    Number of half-lines
                                                           used by new 
                                                           header/footer
                                                  Byte:    New def byte
                                                           (see below)
                                                  Byte:    $D1
The format of the def byte is as follows:
Bits 0-1:    Type:    0 = Header A    Bits 2-7:    Occurrence: 0 = Never
                      1 = Header B                             1 = All pages
                      2 = Footer A                             2 = Odd pages
                      3 = Footer B                             4 = Even pages

Note:  The low-order two bits of the old def byte (the old types) must be correct.

   Variable    $D2     Footnote                   Byte:    $D2
                                                  Byte:    Footnote number
                                                  Byte:    Number of half-lines
                                                  Byte:    $FF
                                                  Byte:    Left margin
                                                  Byte:    Right margin
                                                  Bytes:   ASCII Text
                                                  Byte:    $D2
     Note:  WordPerfect versions 1.0 and 1.1 use this function code.  
     Versions 2.0 and later use function code $E2 instead.

     4         $D3     Set Footnote Number        Byte:    $D3
                                                  Byte:    Old footnote number
                                                  Byte:    New footnote number
                                                  Byte:    $D3
     Note:  WordPerfect versions 1.0 and 1.1 use this function code.  
     Versions 2.0 and later use function code $E4 instead.

     4         $D4     (Used in other WordPerfect Corporation Products)

     4         $D5     Set lines per inch         Byte:    $D5
                                                  Byte:    Old LPI code
                                                  Byte:    New LPI code
                                                  Byte:    $D5
     Note:  Only 6 or 8 lines per inch is valid.

     6         $D6     Set extended tabs          Byte:    $D6
                                                  Byte:    Old starting
                                                           position
                                                  Byte:    Old increment
                                                  Byte:    New starting
                                                           position
                                                  Byte:    New increment
                                                  Byte:    $D6
     Note:  The starting column position must be at least 160.

   Variable    $D7     (Used in other WordPerfect Corporation Products)

     4         $D8     Set alignment character    Byte:    $D8
                                                  Byte:    Old alignment
                                                           character
                                                  Byte:    New alignment
                                                           character
                                                  Byte:    $D8
     4         $D9     Set left margin release    Byte:    $D9
                       (number of columns         Byte:    Old number
                       to go left)                Byte:    New number
                                                  Byte:    $D9

     4         $DA     Set underline mode         Byte:    $DA
                                                  Byte:    Old mode (see below)
                                                  Byte:    New mode (see below)
                                                  Byte:    $DA
     The underline mode is defined as follows:
     0 = Normal Underline
     1 = Double Underline
     2 = Single Underline Continuous
     3 = Double Underline Continuous

     4         $DB     Set sheet feeder bin       Byte:    $DB
                       number                     Byte:    Old number
                                                  Byte:    New number
                                                  Byte:    $DB
     Note:  The number is zero based (bin #1 is stored as 0).

   Variable    $DC     End of page function       Byte:    $DC
                      (WordPerfect inserts this   Byte:    Number of 1/2 lines  
                      and it changes with                  at end of page,
                      each version)                        low 7 bits 
                                                  Byte:    Number of 1/2 lines 
                                                           at end of page,
                                                           high 7 bits
                                                  Byte:    Number of 1/2 lines 
                                                           used for footnotes
                                                  Byte*:   Number of pages
                                                           used for footnotes
                                                  Byte*:   Number of footnotes
                                                           on this page
                                                  Byte:    CEOP Flag
                                                  Byte:    Suppress code
                                                  Byte:    $DC
     Note:  Bytes marked with an asterisk (*) are fields present 
     only in WordPerfect 2.0 and later.

    24         $DD     (Used in other WordPerfect Corporation Products)

     4         $DE     End of temporary margin    Byte:    $DE
                                                  Byte:    Old left
                                                           temporary margin
                                                  Byte:    Old right
                                                           temporary margin
                                                  Byte:    $DE
                                                  
   Variable    $DF     Invisible characters       Byte:    $DF
                       (embedded printer command) Bytes:   7-bit text
                                                  Byte:    $DF

     4         $E0     Temporary margin           Byte:    $E0
                                                  Byte:    New right
                                                           temporary margin
                                                  Byte:    New left
                                                           temporary  margin
                                                  Byte:    $E0

     3         $E1     (Used in other WordPerfect Corporation Products)

   Variable    $E2     New footnote/endnote       Byte:    $E2
                       (WordPerfect 2.0 and later)Byte:    Def byte (see below)
                                                  Byte:    Value A (see below)
                                                  Byte:    Value B (see below)
                                                  Byte:    Value C (see below)
                                                  Byte:    Value D (see below)
                                                  Byte:    Old footnote length
                                                           in 1/2 lines
                                                  Byte:    Number of lines
                                                           on page 1
                                                  Byte:    Number of lines
                                                           on page 2
                                                  Byte:    Number of lines
                                                           on page 3
                                                      .
                                                      .
                                                      .
                                                  Byte:    Number of lines
                                                           on page N
                                                  Byte:    Number of pages
                                                  Byte:    $FF
                                                  Byte:    Left margin
                                                  Byte:    Right margin
                                                  Bytes:   ASCII Text
                                                  Byte:    $E2
     The Def Byte is defined as follows:
     Def Bit 0:    0 = use numbers
                   1 = use characters
     Def Bit 1:    0 = footnote
                   1 = endnote

     If Def Bit 0 = 0, then Values A and B are the footnote or 
     endnote number taken together (see below.)  If Def Bit 0 = 1, 
     then Value A is the number of characters and Value B is the 
     character.

     Note:  Values A and B (when taken together) and Values C and D 
     (always) are 14-bit numbers split into 7-bit bytes, high order 
     byte first.

     Note:  For endnotes, there is just a null between Value D and 
     the $FF byte.

   150         $E3     Footnote information/      Byte:    $E3
                       options
                                                  74 Bytes:Old Footnote values
                                                  74 Bytes:New Footnote values
                                                  Byte:    $E3

     The footnote values are defined as follows:  Byte:    Spacing 
                                                           in footnotes (in 
                                                           half-lines)
                                                  Byte:    Spacing between
                                                           footnotes (in
                                                           half-lines)
                                                  Byte:    Number of lines
                                                           to keep together
                                                  Byte:    Flag byte:
                                                   Bit 0:    1 if numbering
                                                             starts
                                                             on each page
                                                   Bits 1-2: (for footnotes)
                                                             0 = Use numbers 
                                                             1 = Use characters
                                                             2 = Use letters
                                                   Bits 3-4: (for endnotes)
                                                             0 = Use numbers
                                                             1 = Use characters
                                                             2 = Use letters
                                                   Bits 5-6: 0 = No line
                                                                 separator
                                                             1 = 2" line
                                                             2 = Line from left
                                                                 to right
                                                                 margin
                                                             3 = 2" line and
                                                                 continued
                                                                 message
                                                   Bit 7:    0 = footnotes
                                                                 after text
                                                             1 = footnotes at
                                                                 bottom of page
                                                  Byte:    Number of characters
                                                           used in place of 
                                                           footnote numbers
                                                  5 Bytes: Characters used in
                                                           place of footnote 
                                                           numbers (null 
                                                           terminated if less 
                                                           than five)
                                                  Byte:    Number of
                                                           displayable
                                                           characters in string 
                                                           for footnote text
                                                  15 Bytes:String for
                                                           footnote text
                                                  Byte:    Number of
                                                           displayable
                                                           characters in string 
                                                           for endnote text
                                                  15 Bytes:String for
                                                           endnote text
                                                  Byte:    Number of
                                                           displayable
                                                           characters in string 
                                                           for footnote note
                                                  15 Bytes:String for
                                                           footnote note
                                                  Byte:    Number of
                                                           displayable
                                                           characters in string 
                                                           for endnote note
                                                  15 Bytes:String for
                                                           endnote note

     6         $E4     New set footnote           Byte:    $E4
                       (WordPerfect 2.0 and later)Byte:    Old number,high byte
                                                  Byte:    Old number,low byte
                                                  Byte:    New number,high byte
                                                  Byte:    New number,low byte
                                                  Byte:    $E4

    Note:  The new number is zero based (stored as new number minus one)
    Note:  Footnote numbers are 14-bit numbers split into 7-bit 
    bytes, high order byte first.

    23         $E5    (Used in other WordPerfect Corporation Products)
    11         $E6    (Used in other WordPerfect Corporation Products)
     3         $E7    (Used in other WordPerfect Corporation Products)
     3         $E8    (Used in other WordPerfect Corporation Products)
   Variable    $E9    (Used in other WordPerfect Corporation Products)
   Variable    $EA    (Used in other WordPerfect Corporation Products)
    32         $EB    (Used in other WordPerfect Corporation Products)
     4         $EC    (Used in other WordPerfect Corporation Products)
   Variable    $ED    (Used in other WordPerfect Corporation Products)
    44         $EE    (Used in other WordPerfect Corporation Products)
    18         $EF    (Used in other WordPerfect Corporation Products)
     6         $F0    (Used in other WordPerfect Corporation Products)
   106         $F1    (Used in other WordPerfect Corporation Products)
   Variable    $F2    (Used in other WordPerfect Corporation Products)
   100         $F3    (Used in other WordPerfect Corporation Products)